package ui;

import java.awt.Font;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.JScrollPane;
import servicios.GenericBusinessException;
import util.GuiUtilities;
import java.awt.Rectangle;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import java.util.Observable;
import java.util.Observer;
import dominio.Cliente;
import dominio.Pedido;
import dominio.Producto;
import dominio.ProductoPedido;
import javax.swing.SwingConstants;

public class UIPedido extends JFrame implements Observer {

	private static final long serialVersionUID = 1L;
	private JPanel jContentPane = null;
	private JLabel lEstado = null;
	private JLabel lFechaEntrega = null;
	private JTextField txtEstado = null;
	private JTextField txtFechaEntrega = null;
	private JButton btnGuardar = null;
	private JButton btnEliminar = null;
	private JButton btnNuevo = null;
	private JButton btnAgregar = null;
	private JButton btnQuitar = null;
	private JList jListProductosAvailable = null;
	private JList jListRaiz = null;
	private JLabel lblRaiz = null;
	private DefaultListModel listaProductosAvailable = null;
	private DefaultListModel listaProductosUsed = null;
	private DefaultListModel listaRaiz = null;
	private JLabel lFechaFinalizado = null;
	private JTextField txtFechaFinalizado = null;
	private JScrollPane jScrollPaneRaiz = null;
	private JScrollPane jScrollPaneAvailable = null;
	private JLabel lblOid = null;
	private JTextField txtOid = null;
	private Pedido pedidoActual=new Pedido();  //  @jve:decl-index=0:
	private JScrollPane jScrollPaneUsed = null;
	private JList jListProductosUsed = null;
	private JLabel lblNombreCliente = null;
	private JTextField txtNombreCliente = null;
	private JButton btnBuscarCliente = null;
	private JLabel lblIdCliente = null;
	private JTextField txtIdCliente = null;
	private JLabel lblProductosUsed = null;
	private JLabel lblProductosAvailable = null;
	private JTextField txtCantidad = null;
	private JLabel lblCantidad = null;
	private ModeloPlanProduccion modeloPlanProduccion;
	private JButton btnCantidad = null;
	
	/**
	 * This is the default constructor
	 * @param modeloPlanProduccion 
	 */
	public UIPedido(ModeloPlanProduccion modeloPlanProduccion) {
		super();
		this.modeloPlanProduccion=modeloPlanProduccion;
		modeloPlanProduccion.agregarObservador(this);
		initialize();
	}

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private void initialize() {
		this.setSize(662, 491);
		this.setContentPane(getJContentPane());
		this.setTitle("ABM Pedidos");
	}

	/**
	 * This method initializes jContentPane
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			lblCantidad = new JLabel();
			lblCantidad.setBounds(new Rectangle(191, 211, 59, 18));
			lblCantidad.setText("Cantidad");
			lblProductosAvailable = new JLabel();
			lblProductosAvailable.setBounds(new Rectangle(291, 181, 137, 24));
			lblProductosAvailable.setText("Productos Disponibles");
			lblProductosUsed = new JLabel();
			lblProductosUsed.setBounds(new Rectangle(16, 180, 137, 24));
			lblProductosUsed.setText("Productos en Pedido");
			lblIdCliente = new JLabel();
			lblIdCliente.setBounds(new Rectangle(2, 153, 98, 19));
			lblIdCliente.setText("Id Cliente");
			lblNombreCliente = new JLabel();
			lblNombreCliente.setBounds(new Rectangle(2, 126, 98, 19));
			lblNombreCliente.setText("Nombre Cliente");
			lblOid = new JLabel();
			lblOid.setBounds(new Rectangle(2, 99, 98, 19));
			lblOid.setText("Id");
			lFechaFinalizado = new JLabel();
			lFechaFinalizado.setBounds(new Rectangle(2, 72, 98, 19));
			lFechaFinalizado.setText("Fecha Finalizado");
			lblRaiz = new JLabel();
			lblRaiz.setBounds(new Rectangle(511, 12, 49, 31));
			lblRaiz.setText("Pedidos");
			lFechaEntrega = new JLabel();
			lFechaEntrega.setBounds(new Rectangle(2, 45, 98, 19));
			lFechaEntrega.setText("Fecha Entrega");
			lEstado = new JLabel();
			lEstado.setBounds(new Rectangle(2, 18, 98, 19));
			lEstado.setText("Estado");
			jContentPane = new JPanel();
			jContentPane.setLayout(null);
			jContentPane.add(lEstado, null);
			jContentPane.add(lFechaEntrega, null);
			jContentPane.add(lFechaFinalizado, null);
			jContentPane.add(getTxtEstado(), null);
			jContentPane.add(getTxtFechaEntrega(), null);
			jContentPane.add(getTxtFechaFinalizado(), null);
			jContentPane.add(getBtnGuardar(), null);
			jContentPane.add(getBtnEliminar(), null);
			jContentPane.add(getBtnNuevo(), null);
			jContentPane.add(getBtnAgregar(), null);
			jContentPane.add(getJScrollPaneAvailable(), null);
			jContentPane.add(getTxtFechaFinalizado(), null);
			jContentPane.add(getBtnQuitar(), null);
			jContentPane.add(lblRaiz, null);
			jContentPane.add(getJScrollPaneRaiz(), null);
			jContentPane.add(lblOid, null);
			jContentPane.add(getTxtOid(), null);
			jContentPane.add(getJScrollPaneUsed(), null);
			jContentPane.add(lblNombreCliente, null);
			jContentPane.add(getTxtNombreCliente(), null);
			jContentPane.add(getBtnBuscarCliente(), null);
			jContentPane.add(lblIdCliente, null);
			jContentPane.add(getTxtIdCliente(), null);
			jContentPane.add(lblProductosUsed, null);
			jContentPane.add(lblProductosAvailable, null);
			jContentPane.add(getTxtCantidad(), null);
			jContentPane.add(lblCantidad, null);
			jContentPane.add(getBtnCantidad(), null);
			pedidoActual.setEstado("Nuevo");
			cargarRaiz();
			cargarProductosPedidoSel();
			mostrarFechas();
		}
		return jContentPane;
	}

	private void cargarRaiz() {
		listaRaiz.clear();
		try {
			List<Object> losPedidos=Fachada.getListaPedidos();
			if(!losPedidos.isEmpty()){
				for (Object p : losPedidos) {
					listaRaiz.addElement((Pedido) p);
				}	
			}
		} catch (Exception e) {
			GuiUtilities.showError(this,e.getMessage());
		}
	}

	/**
	 * This method initializes txtEstado	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getTxtEstado() {
		if (txtEstado == null) {
			txtEstado = new JTextField();
			txtEstado.setBounds(new Rectangle(100, 18, 127, 20));
			txtEstado.setEditable(false);
		}
		return txtEstado;
	}
	/**
	 * This method initializes txtFechaFinalizado	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	
	private JTextField getTxtFechaFinalizado() {
		if (txtFechaFinalizado == null) {
			txtFechaFinalizado = new JTextField();
			txtFechaFinalizado.setEditable(false);
			txtFechaFinalizado.setBounds(new Rectangle(100, 72, 159, 20));
		}
		return txtFechaFinalizado;
	}
	/**
	 * This method initializes txtFechaEntrega	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getTxtFechaEntrega() {
		if (txtFechaEntrega == null) {
			txtFechaEntrega = new JTextField();
			txtFechaEntrega.setBounds(new Rectangle(100, 46, 129, 20));
		}
		return txtFechaEntrega;
	}

	/**
	 * This method initializes btnGuardar	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getBtnGuardar() {
		if (btnGuardar == null) {
			btnGuardar = new JButton();
			btnGuardar.setBounds(new Rectangle(268, 11, 89, 21));
			btnGuardar.setText("Guardar");
			btnGuardar.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					guardarPedido();
				}
			});
		}
		return btnGuardar;
	}

	protected void guardarPedido() {
		//set oid a 0 si es nuevo para agarrar nuevo oid
		if(txtOid.getText().equals(null)||txtOid.equals("")){
			pedidoActual.setId(0);
		}
		if(validoCampos()){
			if(listaProductosUsed.getSize()>0){
				try {
					pedidoActual.setEstado("En Espera");
					pedidoActual.setCliente(Fachada.buscarCliente(Integer.parseInt(txtIdCliente.getText())));
					pedidoActual.setProductosPedido(listaModificada());
					pedidoActual.setFechaEntrega(getFechaEntrega());
					int idPedido=Fachada.guardarPedido(pedidoActual);
					Cliente cliente=Fachada.buscarCliente(Integer.parseInt(txtIdCliente.getText()));
					cliente.getPedidos().add(Fachada.buscarPedido(idPedido));
					Fachada.guardarCliente(cliente);
					cargarRaiz();
					borrarCampos();
					modeloPlanProduccion.hasChanged();
				} catch (NumberFormatException e) {
					GuiUtilities.showError(this,e.getMessage());
				} catch (GenericBusinessException e) {
					GuiUtilities.showError(this,e.getMessage());
				}
			}else{
				GuiUtilities.showError(this,"El pedido debe tener al menos un producto");
			}
		}
	}

	private Date getFechaEntrega(){
		try {
			SimpleDateFormat sdf = new SimpleDateFormat();
			sdf.applyPattern("dd/MM/yyyy");
			String date=txtFechaEntrega.getText();
			java.util.Date processDate = sdf.parse(date);
		return processDate;

		} catch (NumberFormatException e) {
			GuiUtilities.showError(this,e.getMessage());
		} catch (ParseException e) {
			GuiUtilities.showError(this,e.getMessage());
		}
		return null;

	}
		

	
	private List<ProductoPedido> listaModificada(){
		List<ProductoPedido> retorno=new ArrayList<ProductoPedido>();
		for(int i=0;i<getListaProductosUsed().getSize();i++){
			if(getListaProductosUsed().isEmpty()==false){
				retorno.add((ProductoPedido) getListaProductosUsed().getElementAt(i));	
			}
			
		}
		return retorno;
	}
	
	private void borrarCampos() {
		txtOid.setText("");
		txtEstado.setText("");
		mostrarFechas();
		txtFechaFinalizado.setText("");
		txtNombreCliente.setText("");
		txtIdCliente.setText("");
		pedidoActual=new Pedido();
		pedidoActual.setEstado("Nuevo");
	    cargarRaiz();
	    cargarProductosPedidoSel();
	}

	@SuppressWarnings("static-access")
	private void mostrarFechas() {
		GregorianCalendar cal=new GregorianCalendar();
		cal.setTime(new Date());
		txtFechaEntrega.setText(Integer.toString(cal.get(cal.DAY_OF_MONTH))+
		"/"+Integer.toString(cal.get(cal.MONTH))+"/"+Integer.toString(cal.get(cal.YEAR)));
	}

	private boolean validoCampos() {
		if(txtIdCliente.getText().equals("")){
			GuiUtilities.showError(this,"Debe seleccionar un Cliente");
			return false;
		}else{
			if(pedidoActual.getEstado().equals("Finalizado")){
				GuiUtilities.showError(this,"No puede modificar un Pedido Finalizado");
				return false;
			}
			try{
				DateFormat sdf=new SimpleDateFormat("dd/MM/yyyy");
				sdf.parse(txtFechaEntrega.getText());
			} catch (ParseException e) {
				GuiUtilities.showError(this,"Fecha incorrecta, formato debe ser dd/mm/aaaa");
				return false;
			}
			return true;
		}
	}


	/**
	 * This method initializes btnEliminar	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getBtnEliminar() {
		if (btnEliminar == null) {
			btnEliminar = new JButton();
			btnEliminar.setBounds(new Rectangle(271, 50, 89, 21));
			btnEliminar.setText("Eliminar");
			btnEliminar.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					eliminar();
				}
			});
		}
		return btnEliminar;
	}

	protected void eliminar() {
		try{
			if(pedidoActual.getEstado().equals("Finalizado")){
				GuiUtilities.showError(this,"No se puede eliminar un pedido Finalizado");
			}else{
			Fachada.eliminar(pedidoActual);
			borrarCampos();
			cargarRaiz();
			modeloPlanProduccion.hasChanged();
			}
		}catch(Exception e){
			GuiUtilities.showError(this,"No se pudo eliminar el pedido");
		}
		
	}

	/**
	 * This method initializes btnNuevo	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getBtnNuevo() {
		if (btnNuevo == null) {
			btnNuevo = new JButton();
			btnNuevo.setBounds(new Rectangle(267, 89, 89, 21));
			btnNuevo.setText("Nuevo");
			btnNuevo.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					borrarCampos();
					
				}
			});
		}
		return btnNuevo;
	}

	/**
	 * This method initializes btnAgregar	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getBtnAgregar() {
		if (btnAgregar == null) {
			btnAgregar = new JButton();
			btnAgregar.setBounds(new Rectangle(183, 351, 74, 24));
			btnAgregar.setFont(new Font("Candara", Font.BOLD, 18));
			btnAgregar.setText("<--");
			btnAgregar.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					agregarProducto();
				}
			});
		}
		return btnAgregar;
	}

	protected void agregarProducto() {
		if (jListProductosAvailable.getSelectedIndex()==-1) {
			GuiUtilities.showError(this,"Debe Seleccionar un Producto Disponible");
		}else if(validoEstado()) {
			if ((Producto) jListProductosAvailable.getSelectedValue()!=null) {
				if (pedidoActual==null) {
					pedidoActual = new Pedido();
				}
				try{
					Object itemARemover=jListProductosAvailable.getSelectedValue();
					listaProductosAvailable.removeElement(itemARemover);
					Producto producto=(Producto) itemARemover;
					ProductoPedido pp=new ProductoPedido();
					pp.setCantidad(Integer.parseInt(txtCantidad.getText()));
					pp.setProducto(producto);
					listaProductosUsed.addElement(pp);
				}catch(NumberFormatException e){
					GuiUtilities.showError(this,"Debe seleccionar cantidad");
				}
			}
		}
	}

	private boolean validoEstado() {
		if(pedidoActual.getEstado().equals("Finalizado")){
			GuiUtilities.showError(this,"No puede modificar un Pedido Finalizado");
			return false;
		}else{
			return true;
		}
		
	}

	/**
	 * This method initializes btnQuitar	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getBtnQuitar() {
		if (btnQuitar == null) {
			btnQuitar = new JButton();
			btnQuitar.setBounds(new Rectangle(184, 383, 74, 24));
			btnQuitar.setFont(new Font("Candara", Font.BOLD, 18));
			btnQuitar.setText("-->");
			btnQuitar.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					quitarArticulo();
				}
			});
		}
		return btnQuitar;
	}

	protected void quitarArticulo() {
		if (jListProductosUsed.getSelectedIndex()==-1) {
			GuiUtilities.showError(this,"Debe Seleccionar un Producto en uso");
		}else if(validoEstado()) {
			if ((ProductoPedido) jListProductosUsed.getSelectedValue()!=null) {
					Object itemARemover=jListProductosUsed.getSelectedValue();
					listaProductosUsed.removeElement(itemARemover);
					ProductoPedido pp=(ProductoPedido) itemARemover;
					listaProductosAvailable.addElement(pp.getProducto());
			}
		}
	}

	/**
	 * This method initializes jListProductosAvailable	
	 * 	
	 * @return javax.swing.JList	
	 */
	private JList getJListProductosAvailable() {
		if (jListProductosAvailable == null) {
			listaProductosAvailable=new DefaultListModel();
			jListProductosAvailable = new JList(listaProductosAvailable);
		}
		return jListProductosAvailable;
	}

	/**
	 * This method initializes jListRaiz	
	 * 	
	 * @return javax.swing.JList	
	 */
	private JList getJListRaiz() {
		if (jListRaiz == null) {
			listaRaiz=new DefaultListModel();
			jListRaiz = new JList(listaRaiz);
			jListRaiz
			.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
				public void valueChanged(javax.swing.event.ListSelectionEvent e) {
					if (jListRaiz.getSelectedIndex()!=-1) {
						cargarProductosPedidoSel();
					}
				}
			});
		}
		return jListRaiz;
	}


	@SuppressWarnings("static-access")
	protected void cargarProductosPedidoSel() {
		try {
		if(jListRaiz.getSelectedIndex()!=-1){
		pedidoActual = (Pedido) jListRaiz.getSelectedValue();
			txtEstado.setText(pedidoActual.getEstado());
			GregorianCalendar cal=new GregorianCalendar();
			cal.setTime(pedidoActual.getFechaEntrega());
			txtFechaEntrega.setText(Integer.toString(cal.get(cal.DAY_OF_MONTH))+
			"/"+Integer.toString(cal.get(cal.MONTH))+"/"+Integer.toString(cal.get(cal.YEAR)));
			txtOid.setText(Integer.toString(pedidoActual.getId()));
			if(pedidoActual.getFechaFinalizado()==null){
				txtFechaFinalizado.setText("");
			}else{
				txtFechaFinalizado.setText(pedidoActual.getFechaFinalizado().toString());
			}
			Cliente clienteActual=Fachada.buscarClienteXIdPedido(pedidoActual.getId());
			txtNombreCliente.setText(clienteActual.getNombre());
			txtIdCliente.setText(Integer.toString(clienteActual.getId()));
		}
		listaProductosUsed.clear();
		listaProductosAvailable.clear();

			List<ProductoPedido> productosUsed=pedidoActual.getProductosPedido();
			List<Object> productosAvailable=Fachada.obtenerProductosNotIn(pedidoActual);
			if(productosUsed!=null){
				for (Object p : productosUsed) {
					ProductoPedido p1=(ProductoPedido)p;
					listaProductosUsed.addElement(p1);
				}	
			}
			for (Object p : productosAvailable) {
				Producto p1=(Producto)p;
				listaProductosAvailable.addElement(p1);
			}	

		} catch (GenericBusinessException e1) {
			GuiUtilities.showError(this,e1.getMessage());
		//} catch (ParseException e) {
		//	GuiUtilities.showError(this,e.getMessage());
		}
	}

	/**
	 * This method initializes jScrollPaneRaiz	
	 * 	
	 * @return javax.swing.JScrollPane	
	 */
	private JScrollPane getJScrollPaneRaiz() {
		if (jScrollPaneRaiz == null) {
			jScrollPaneRaiz = new JScrollPane();
			jScrollPaneRaiz.setBounds(new Rectangle(457, 52, 184, 385));
			jScrollPaneRaiz.setViewportView(getJListRaiz());
		}
		return jScrollPaneRaiz;
	}

	/**
	 * This method initializes jScrollPaneAvailable	
	 * 	
	 * @return javax.swing.JScrollPane	
	 */
	private JScrollPane getJScrollPaneAvailable() {
		if (jScrollPaneAvailable == null) {
			jScrollPaneAvailable = new JScrollPane();
			jScrollPaneAvailable.setBounds(new Rectangle(278, 212, 171, 231));
			jScrollPaneAvailable.setViewportView(getJListProductosAvailable());
		}
		return jScrollPaneAvailable;
	}

	/**
	 * This method initializes txtOid	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getTxtOid() {
		if (txtOid == null) {
			txtOid = new JTextField();
			txtOid.setBounds(new Rectangle(100, 99, 127, 20));
			txtOid.setEditable(false);
		}
		return txtOid;
	}

	/**
	 * This method initializes jScrollPaneUsed	
	 * 	
	 * @return javax.swing.JScrollPane	
	 */
	private JScrollPane getJScrollPaneUsed() {
		if (jScrollPaneUsed == null) {
			jScrollPaneUsed = new JScrollPane();
			jScrollPaneUsed.setBounds(new Rectangle(4, 208, 161, 233));
			jScrollPaneUsed.setViewportView(getJListProductosUsed());
		}
		return jScrollPaneUsed;
	}

	/**
	 * This method initializes jListProductosUsed	
	 * 	
	 * @return javax.swing.JList	
	 */
	private JList getJListProductosUsed() {
		if (jListProductosUsed == null) {
			listaProductosUsed=new DefaultListModel();
			jListProductosUsed = new JList(listaProductosUsed);
		}
		return jListProductosUsed;
	}
	public DefaultListModel getListaProductosUsed() {
		return listaProductosUsed;
	}

	public void setListaProductosUsed(DefaultListModel listaProductosUsed) {
		this.listaProductosUsed = listaProductosUsed;
	}

	/**
	 * This method initializes txtNombreCliente	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getTxtNombreCliente() {
		if (txtNombreCliente == null) {
			txtNombreCliente = new JTextField();
			txtNombreCliente.setBounds(new Rectangle(100, 126, 127, 20));
		}
		return txtNombreCliente;
	}

	/**
	 * This method initializes btnBuscarCliente	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getBtnBuscarCliente() {
		if (btnBuscarCliente == null) {
			btnBuscarCliente = new JButton();
			btnBuscarCliente.setBounds(new Rectangle(237, 124, 121, 21));
			btnBuscarCliente.setToolTipText("Busca el Cliente por su Nombre");
			btnBuscarCliente.setText("Buscar Cliente");
			btnBuscarCliente.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					buscarClienteXNombre();
				}
			});
		}
		return btnBuscarCliente;
	}

	protected void buscarClienteXNombre() {
		try {
			List<Cliente> lista=Fachada.buscarClienteXNombre(txtNombreCliente.getText());
			if(!lista.isEmpty()){
				if(lista.size()==1){
					Cliente unCliente=(Cliente)lista.get(0);
					txtIdCliente.setText(Integer.toString(unCliente.getId()));
					txtNombreCliente.setText(unCliente.getNombre());
				}else{
				}
			}
		} catch (GenericBusinessException e1) {
			GuiUtilities.showError(this,e1.getMessage());
		}
	}

	/**
	 * This method initializes txtIdCliente	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getTxtIdCliente() {
		if (txtIdCliente == null) {
			txtIdCliente = new JTextField();
			txtIdCliente.setBounds(new Rectangle(100, 153, 127, 20));
			txtIdCliente.setEditable(false);
		}
		return txtIdCliente;
	}

	/**
	 * This method initializes txtCantidad	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getTxtCantidad() {
		if (txtCantidad == null) {
			txtCantidad = new JTextField();
			txtCantidad.setBounds(new Rectangle(196, 233, 46, 24));
		}
		return txtCantidad;
	}

	@Override
	public void update(Observable arg0, Object arg1) {
		cargarRaiz();
		cargarProductosPedidoSel();
		mostrarFechas();
	}

	/**
	 * This method initializes btnCantidad	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getBtnCantidad() {
		if (btnCantidad == null) {
			btnCantidad = new JButton("<html><center><b>Actualizar Cantidad</b>");
			btnCantidad.setBounds(new Rectangle(176, 261, 88, 43));
			btnCantidad.setHorizontalAlignment(SwingConstants.CENTER);
			btnCantidad.setFont(new Font("Dialog", Font.BOLD, 12));
			btnCantidad.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					actalizarCantidad();
				}
			});
		}
		return btnCantidad;
	}

	protected void actalizarCantidad() {
		if (jListProductosUsed.getSelectedIndex()==-1) {
			GuiUtilities.showError(this,"Debe Seleccionar un Producto en uso");
		}else if(validoEstado()){
			if ((ProductoPedido) jListProductosUsed.getSelectedValue()!=null) {
				Object itemACambiarCant=jListProductosUsed.getSelectedValue();
				ProductoPedido pp=(ProductoPedido) itemACambiarCant;
				try{
					pp.setCantidad(Integer.parseInt(txtCantidad.getText()));
					listaProductosUsed.removeElement(itemACambiarCant);
					listaProductosUsed.addElement(pp);
				}catch(NumberFormatException e){
					GuiUtilities.showError(this,"Debe indicar una Cantidad");
				}
			}
		}
	}


}  //  @jve:decl-index=0:visual-constraint="10,10"
